package com.hwadee.property.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hwadee.property.pojo.Complain;
import com.hwadee.property.dto.PageResult;

import java.text.ParseException;
import java.util.Date;
import java.util.List;

public interface IComplainService extends IService<Complain> {

    /**
     * 添加投诉或建议
     * @param complain 投诉或建议对象
     * @return 是否添加成功
     */
    boolean addComplain(Complain complain);

    /**
     * 更新投诉或建议的处理状态
     * @param id 投诉或建议的ID
     * @param status 新的处理状态
     * @param handlerId 处理人员ID
     * @param completionDate 处理完成时间
     * @return 是否更新成功
     */
    boolean updateStatus(Long id, String status, Long handlerId, String completionDate) throws ParseException;

    /**
     * 查询投诉或建议列表（分页）
     * @param current 当前页面
     * @param size 页面大小
     * @param communityId 小区ID（可选）
     * @param ownerId 业主ID（可选）
     * @param status 处理状态（可选）
     * @return 分页结果
     */
    PageResult<Complain> getComplainListPage(int current, int size, Long communityId, Long ownerId, String status);

    /**
     * 根据小区ID查询未处理的投诉或建议数量
     *
     * @param communityId 小区ID
     * @return 未处理的投诉或建议数量
     */
    long getUnprocessedComplainCount(Long communityId);

    List<Complain> listByOwnerId(Long userId);

    List<Complain> listByCommunityId(Long communityId);
}